This document relates to scheduling software processes or threads on physical machines having multiple processor packages.
The physical machines may have multiple virtual machines running thereon. A virtual machine is a software-based abstraction of a physical computer system. In general, a computer program that can be executed on a physical computer system can be executed in a virtual machine using virtualization software. Virtualization software is software that is logically interposed and interfaces with a virtual machine and a physical computer system. Each virtual machine is configured to execute an operating system, referred to herein as a guest OS, and applications. A physical computer system, referred to herein as a host machine or physical machine, can execute one or more virtual machines.
Each physical machine has a respective hardware platform on which the virtual machines execute. In some cases, the hardware platform for a given physical machine includes multiple processor packages that each include multiple processor cores, i.e., multiple independent central processing units, and workloads from the virtual machines executing on the host machine are distributed among the processor packages.
Additionally, at any given time during operation of the physical machine, each of the processor packages can be in a respective one of a specified set of package power states that define how much power is being consumed by the package. The package power states in the set of states range from states that consume a large amount of power to states that are power-efficient, i.e., states in which a larger proportion of the circuitry of the package is powered down. For some of the package power states, in order for a package to enter the state, every other package on the physical machine must be in a state that is at least as power-efficient as the particular state. That is, for a physical machine having two packages, as long as one package is in a first package power state, the other package generally cannot enter a different power state that is more power-efficient than the first package power state.
However, in some systems, one of the power states may be an independent package power state. An independent package power state is a state that a package can enter independent of the current power state of any other package on the physical machine. Thus, even if one or more packages on a physical machine are in a less power-efficient state than the independent package power state, another package on the physical machine may still enter the independent package power state.